#ifndef QATL_H
#define QATL_H

#include <QtCore/QString>
#include <functional>

#include <boost/lexical_cast.hpp>

/**
 * Template permettant d'écrire n'importe quel type dans une
 * QString. Hérite de std::unary_function pour être utilisé dans une
 * boucle for_each ou transform.
 *
 * Utilise boost::lexical_cast.
 *
 * @author Johan "Solo" Luisier
 */
template< typename T >
struct EcrireQString<T> : std::unary_function< T, QString >
{
  /**
   * Fait la conversion du type T en QString.
   *
   * @param[in] type variable à transformer en QString.
   *
   * @return QString correspondant à la variable type.
   */
  QString operator()( const T& type )
  {
    return QString::fromUtf8( ( boost::lexical_cast< std::string >( type ) .
				c_str() ) );
  };
};

#endif // QATL_H
